home *** CD-ROM | disk | FTP | other *** search
/ Java Interactive Reference Guide / Java Interactive Reference Guide.iso / autorun / java_d.dir / 00241_Field_15.txt < prev    next >
Text File  |  1980-01-11  |  5KB  |  211 lines

  1. 3 Types
  2.  
  3.  
  4. ---------------------------------------------------------
  5.  
  6.  
  7. 3.1 - Numeric Types
  8.  
  9.  
  10.  
  11.  
  12. 3.1.1 - Integer Types
  13.  
  14.  
  15.  
  16. 3.1.2 - Floating Point Types
  17.  
  18.  
  19.  
  20. 3.1.3 - Character Types
  21.  
  22.  
  23.  
  24.  
  25. 3.2 - Boolean Types
  26.  
  27.  
  28.  
  29. 3.3 - Arrays
  30.  
  31.  
  32.  
  33.  
  34. 3.3.1 - Array Detail
  35.  
  36.  
  37.  
  38.  
  39. Every variable and every expression has a type. Type determines the allowable range of values a variable can hold, allowable operations on those values, and the meanings of the operations. Built-in types are provided by the Java language. Programmers can compose new types using the class and interface mechanisms (see "Classes" on page 11 and "Interfaces" on page 23).
  40.  
  41. The Java language has two kinds of types: simple and composite. Simple types are those that cannot be broken down; they are atomic. The integer, floating point, boolean, and character types are all simple types. Composite types are built on simple types. The language has three kinds of composite types: arrays, classes, and interfaces. Simple types and arrays are discussed in this section. 
  42.  
  43.  
  44. ---------------------------------------------------------
  45.  
  46.  
  47. 3.1 Numeric Types
  48.  
  49.  
  50. ---------------------------------------------------------
  51.  
  52.  
  53. 3.1.1 Integer Types
  54.  
  55. Integers are similar to those in C and C++, with two exceptions: all integer types are machine independent, and some of the traditional definitions have been changed to reflect changes in the world since C was introduced. The four integer types have widths of 8, 16, 32, and 64 bits and are signed. 
  56. <Picture>
  57.  
  58.  
  59. A variable's type does not directly affect its storage allocation. Type only determines a variable's arithmetic properties and legal range of values. If a value is assigned to a variable that is outside the legal range of the variable, the value is reduced modulo the range.
  60.  
  61.  
  62. ---------------------------------------------------------
  63.  
  64.  
  65. 3.1.2 Floating Point Types
  66.  
  67. The float keyword denotes single precision (32 bit); double denotes double precision (64 bit). The result of a binary operator on two float operands is a float. If either operand is a double, the result is a double.
  68.  
  69. Floating point arithmetic and data formats are defined by IEEE 754. See "Appendix: Floating Point" on page 37 for details on the floating point implementation.
  70.  
  71.  
  72. ---------------------------------------------------------
  73.  
  74.  
  75. 3.1.3 Character Types
  76.  
  77. The language uses the Unicode character set throughout. Consequently the char data type is defined as a 16-bit unsigned integer.
  78.  
  79.  
  80. ---------------------------------------------------------
  81.  
  82.  
  83. 3.2 Boolean Types
  84.  
  85. The boolean type is used for variables that can be either true or false, and for methods that return true and false values. It's also the type that is returned by the relational operators (e.g., ">="). 
  86.  
  87. Boolean values are not numbers and cannot be converted into numbers by casting.
  88.  
  89.  
  90. ---------------------------------------------------------
  91.  
  92.  
  93. 3.3 Arrays
  94.  
  95. Arrays in the language are first class objects. They replace pointer arithmetic. All objects (including arrays) are referred to by pointers that cannot be damaged by being manipulated as numbers. Arrays are created using the new operator:
  96.  
  97.  
  98.  
  99.  
  100.     char s[] = new char[30];
  101.  
  102.  
  103.  
  104. The first element of an array is at index 0 (zero). Specifying dimensions in the declarations is not allowed. Every allocation of an array must be explicit--use new every time: 
  105.  
  106.  
  107.  
  108.  
  109.     int i[] = new int[3];
  110.  
  111.  
  112.  
  113. The language does not support multi-dimensional arrays. Instead, programmers can create arrays of arrays:
  114.  
  115.  
  116.  
  117.  
  118.    int i[][] = new int[3][4];
  119.  
  120.  
  121.  
  122. At least one dimension must be specified but other dimensions can be explicitly allocated by a program at a later time. For example:
  123.  
  124.  
  125.  
  126.  
  127.    int i[][] = new int[3][];
  128.  
  129.  
  130.  
  131. is a legal declaration. 
  132.  
  133. Subscripts are checked to make sure they're valid:
  134.  
  135.  
  136.  
  137.  
  138.    int a[] = new int[10];
  139.    a[5] = 1;
  140.    a[1] = a[0] + a[2];
  141.    a[-1]     = 4;         // Throws an ArrayIndexOutOfBoundsException
  142.                         // at runtime
  143.    a[10] = 2;           // Throws an ArrayIndexOutOfBoundsException
  144.                         // at runtime
  145.  
  146.  
  147.  
  148. Array dimensions must be integer expressions:
  149.  
  150.  
  151.  
  152.  
  153.    int n;
  154.    ...
  155.    float arr[] = new float[n + 1];
  156.  
  157.  
  158.  
  159. The length of any array can be found by using .length:
  160.  
  161.  
  162.  
  163.  
  164.    int a[][] = new int[10][3];
  165.    println(a.length);           // prints 10
  166.    println(a[0].length);        // prints 3
  167.  
  168.  
  169.  
  170.  
  171. ------------------------------------------------------------------------
  172.  
  173.  
  174. 3.3.1 Array Detail
  175.  
  176. Arrays are instances of subclasses of class Object. In the class hierarchy there is a class named Array, which has one instance variable, "length". For each primitive type there is a corresponding subclass of Array. Similarly, for all classes a corresponding subclass of Array implicitly exists. For example:
  177.  
  178.  
  179.  
  180.  
  181.    new Thread[n]
  182.  
  183.  
  184.  
  185. creates an instance of Thread[]. If class A is a superclass of class B (i.e., B extends A) then A[] is a superclass of B[] (see the diagram below).
  186. <Picture>
  187.  
  188.  
  189. Hence, you can assign an array to an Object:
  190.  
  191.  
  192.  
  193.  
  194.    Object o;
  195.    int a[] = new int[10];
  196.    o = a;
  197.  
  198.  
  199.  
  200. and you can cast an Object to an array:
  201.  
  202.  
  203.  
  204.  
  205.    a = (int[])o;    
  206.  
  207.  
  208.  
  209. Array classes cannot be explicitly subclassed.
  210.  
  211.